﻿using CinemaMaestro.DataLayer.Contracts.Entities;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace CinemaMaestro.DataLayer.Contracts
{
    public interface IUnitOfWork
    {
        IRepository<Language> LanguageRepository { get; }
        IRepository<Movie> MovieRepository { get; }
        IRepository<Actor> ActorRepository { get; }
        IRepository<Category> CategoryRepository { get; }
        IRepository<Director> DirectorRepository { get; }
        IRepository<Cinema> CinemaRepository { get; }
        IRepository<Room> RoomRepository { get; }
        IRepository<Screening> ScreeningRepository { get; }
        IRepository<Reservation> ReservationRepository { get; }
        IRepository<Sale> SaleRepository { get; }

        IDbTransaction BeginTransaction();

        void SaveChanges();
    }
}
